package com.tesisutn.restsoft.dominio.stock;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import org.hibernate.annotations.CollectionOfElements;

import com.tesisutn.restsoft.dominio.articulo.ArticuloComprado;
import com.tesisutn.restsoft.dominio.interfaces.ObjetoDeDominio;

@Entity
public class Stock implements ObjetoDeDominio{
    @Id
    @GeneratedValue
    private Long id;
    //private Integer existenciaActual;
    private Integer existenciaMin;
    private Integer existenciaMax;
    @OneToOne
    private ArticuloComprado articuloComprado;
    @OneToMany(mappedBy="stock")
    private Set<Lote> lotes;

    public Stock(){
    	lotes = new HashSet<Lote>();
    }
    
    
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getExistenciaMin() {
        return existenciaMin;
    }

    public void setExistenciaMin(Integer existenciaMin) {
        this.existenciaMin = existenciaMin;
    }

    public Integer getExistenciaMax() {
        return existenciaMax;
    }

    public void setExistenciaMax(Integer existenciaMax) {
        this.existenciaMax = existenciaMax;
    }

    public ArticuloComprado getArticulo() {
        return articuloComprado;
    }

    public void setArticulo(ArticuloComprado articulo) {
        this.articuloComprado = articulo;
    }

    public Set<Lote> getLotes() {
        return lotes;
    }

    public void addLote(Lote lote){
        lotes.add(lote);
    }

    public void removeLote(Lote lote){
        lotes.remove(lote);
    }

    public Integer getExistenciaActual(){
        Integer total = 0;
        for(Lote lote : lotes){
            total += lote.getCantidad();
        }
        return total;
    }
}
